home *** CD-ROM | disk | FTP | other *** search
/ APDL Eductation Resources / APDL Eductation Resources.iso / programs / misc / cambridge / !7Seg / !RunImage (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1993-05-28  |  5.8 KB  |  262 lines

  1.  >!RunImage
  2.  Cambridge Instruction Set Emulator
  3.  7Seg Device Driver
  4.  Version 1.00 (25th May 1993)         Copyright 
  5.  A. M. Pereira 1993
  6. @DeviceName$="7Seg"    : 
  7.  Device name (shown on TaskManager)
  8. ,appname$="!7Seg"      : 
  9.  Directory name
  10.     ;dirname$="<7Seg$Dir>" : 
  11.  Directory variable (see !Run)
  12. =refresh = 10             : 
  13.  Refresh rate (centi-seconds)
  14. 5Author$ ="Ainsley Pereira"       : 
  15.  For info box
  16. 5Version$="1.00 (27th May 1993)"  : 
  17.  For info box
  18.  q% 256, menu 1024
  19.  "Wimp_Initialise",200,&4B534154,DeviceName$+" Driver" 
  20.  wimp_v,task_handle
  21. quit    = 
  22. make_info_box
  23. device_startup
  24. iconbar = 
  25. iconbar
  26.  "OS_ReadMonotonicTime" 
  27.  time
  28.  "Wimp_PollIdle",,q%,time + refresh 
  29.  event
  30.  event 
  31.       
  32.  0 : 
  33. device_refresh
  34. (      
  35.  2 : 
  36.  "Wimp_OpenWindow",,q%
  37.  )      
  38.  3 : 
  39.  "Wimp_CloseWindow",,q%
  40.       
  41.  6 : 
  42. mouse
  43.       
  44.  9 : 
  45. menuselect
  46.       
  47.  17,18 : 
  48. message
  49.  quit
  50. device_closedown
  51.  "Wimp_CloseDown",task_handle,&4B534154
  52. iconbar
  53. !q%   = -1
  54. q%!4  = 0
  55. q%!8  = 0
  56. q%!12 = 68
  57. q%!16 = 68
  58. q%!20 = %11000000011010
  59. $(q%+24)=appname$
  60.  "Wimp_CreateIcon",,q% 
  61.  iconbar
  62. =iconbar
  63. mouse
  64.  q%!12 
  65. 8    
  66.  -2         : 
  67. ibarclick
  68. make_info_box
  69.  info 400, indirect 1024
  70. ip=indirect
  71.  Visible area
  72. !info=&18C:info!4=&E6
  73. info!8=&456:info!12=&208
  74.  scroll offsets
  75. info!16=0:info!20=0
  76.  Handle to open behind
  77. info!24=-1
  78.  Window flags
  79. info!28=&84200012
  80.  Colours
  81. info!32=&01070207
  82. info!36=&00020103
  83.  Work area
  84. info!40=0:info!44=-290
  85. info!48=&2CA:info!52=0
  86.  Title icon flags
  87. info!56=&13D
  88.  Workarea 'button' flags
  89. info!60=0
  90.  Sprite area
  91. info!64=1
  92.  min width/height
  93. info!68=1
  94.  title data
  95. info!72=ip
  96. X%$ip="About this Device Driver"+
  97. Y'ip+=
  98. ("About this Device Driver")+1
  99. Z+info!80=
  100. ("About this Device Driver")+1
  101. info!76=ip:Null=ip
  102. ]    ip+=1
  103.  Number of icons
  104. info!84=7
  105.  Icons
  106. icp=info+88
  107.  Icon 0, engraved border
  108. !icp=8:icp!4=-286
  109. icp!8=&2C4:icp!12=-42
  110. icp!16=&1700013D
  111. icp!20=Null
  112. $ip="r4"+
  113. icp!24=ip
  114. ip+=3:icp!28=1
  115. icp+=32
  116.  Icon 1, indented header
  117. !icp=&26:icp!4=-78
  118. icp!8=&17C:icp!12=-14
  119. icp!16=&1700013D
  120. icp!20=ip
  121. p $ip=DeviceName$+" Driver"+
  122. q"ip+=
  123. (DeviceName$+" Driver")+1
  124. r%icp!28=
  125. (DeviceName$+" Driver")+1
  126. $ip="r2"+
  127. 0:indented=ip
  128. icp!24=indented
  129. u    ip+=3
  130. icp+=32
  131.  Icon 2, indented message
  132. !icp=&22:icp!4=-142
  133. icp!8=&2AA:icp!12=-90
  134. icp!16=&1700311D
  135. icp!20=ip
  136. |2$ip="Device Driver for use with !Cambridge"+
  137. }4ip+=
  138. ("Device Driver for use with !Cambridge")+1
  139. icp!24=indented
  140. 7icp!28=
  141. ("Device Driver for use with !Cambridge")+1
  142. icp+=32
  143.  Icon 3, Author:
  144. !icp=&28:icp!4=-194
  145. icp!8=&A8:icp!12=-162
  146. icp!16=&17000001
  147. $(icp+20)="Author :"+
  148. icp+=32
  149.  Icon 4, Version:
  150. !icp=&28:icp!4=-258
  151. icp!8=&A8:icp!12=-226
  152. icp!16=&17000001
  153. $(icp+20)="Version:"+
  154. icp+=32
  155.  Icon 5, Author field
  156. !icp=&C6:icp!4=-206
  157. icp!8=&2A8:icp!12=-152
  158. icp!16=&1700313D
  159. icp!20=ip:$ip=Author$+
  160. (Author$)+1
  161. icp!24=indented
  162. icp!28=
  163. (Author$)+1
  164. icp+=32
  165.  Icon 6, Version field
  166. !icp=&C6:icp!4=-270
  167. icp!8=&2A8:icp!12=-216
  168. icp!16=&1700313D
  169. icp!20=ip:$ip=Version$+
  170. (Version$)+1
  171. icp!24=indented
  172. icp!28=
  173. (Version$)+1
  174.  "Wimp_CreateWindow",,info 
  175.  infohandle
  176. ibarclick
  177.  (q%!8 
  178.  %010)=%010 
  179. menu(q%!0-64,96+(2*44))
  180. menuheader(pointer,width,title$)
  181. menupointer=pointer
  182. $menupointer=title$+
  183. menupointer?12=7
  184. menupointer?13=2
  185. menupointer?14=7
  186. menupointer?15=0
  187. menupointer!16=width
  188. menupointer!20=44
  189. menupointer!24=0
  190. menupointer+=28
  191. menuitem(subm,flags,tflags,text$)
  192. menupointer!0=flags
  193. menupointer!4=subm
  194. menupointer!8=tflags
  195. $(menupointer+12)=text$+
  196. menupointer+=24
  197. menu(x,y)
  198. menuheader(menu, 192, DeviceName$)
  199. menuitem(infohandle, 0, &7000031, "Info")
  200. menuitem(-1, 1<<7, &7000031, "Quit")
  201.  "Wimp_CreateMenu",,menu,x,y
  202. menuselect
  203.  !q% 
  204.  info
  205.  1: quit=
  206.  "Wimp_GetPointerInfo",,q%
  207.  (q%!8 
  208.  %001)=%001 
  209. menu(x,y)
  210. message
  211.  q%!16 
  212.  0: quit=
  213. e(erl,err)
  214. q%!0=err
  215. 2$(q%+4)=
  216. $+" (internal error code "+
  217. (erl)+")"
  218.  "Wimp_ReportError",q%,%011,DeviceName$+" Driver" 
  219.  ,fatal
  220.  fatal=2 
  221. reporterror(errnum,errmess$,errflags)
  222. q%!0=errnum
  223. $(q%+4)=errmess$
  224.  "Wimp_ReportError",misc,errflags,DeviceName$+" Driver"
  225. selecticon(w, i, select)
  226.     !q%=w
  227. q%!4=i
  228.  select 
  229.   q%!8=1<<21:q%!12=1<<21
  230.   q%!8=0:q%!12=1<<21
  231.  "Wimp_SetIconState",,q%
  232.  Device specific stuff
  233.  Device does not provide input to Emulator
  234. device_startup
  235.  Device_window 4096
  236.  "Wimp_OpenTemplate",,dirname$+".Templates"
  237.  "Wimp_LoadTemplate",,Device_window+4,Device_window+2048,Device_window+4096,-1,"7Seg",0
  238.  "Wimp_CreateWindow",,Device_window+4 
  239.  !Device_window
  240.  "Wimp_CloseTemplate"
  241. Device_OldOutput = 0
  242.  "Cambridge_ReadIOState" 
  243.  ,Device_Output
  244. device_refresh
  245.  "Wimp_GetWindowState",,Device_window
  246.  "Wimp_OpenWindow",,Device_window
  247. device_closedown
  248. device_refresh
  249.  "Cambridge_ReadIOState" 
  250.  b<>Device_OldOutput 
  251. device_updatewindow(b)
  252. Device_OldOutput = b
  253. device_updatewindow(b)
  254.  bit=0 
  255.  2^bit)>0 
  256. ?    
  257. selecticon(!Device_window, bit, 
  258. )    :
  259.  Common anode!
  260. +    
  261. selecticon(!Device_window, bit, 
  262.